var Reportes =
{
	ECPI:
	{
		apiUrl: "code/api/c_reporte_ecpi.php",

		mDatos: new Rin.Model (null, {
			lista: [ ], lista_vacia: 1,
		}),

		mPaginacion: new Rin.Model (null, {
			total: 0, pagina: 1, paginas: 0, count: 20
		}),

		mFiltros: new Rin.Model ({ enumCargos: [], enumDeptos: [] }, {
			cargo: "",
			depto: "",
			cuenta_presupuestaria: "",
			estado: "",
			min_fecha_contrato: "",
			max_fecha_contrato: "",
			min_fecha_acuerdo: "",
			max_fecha_acuerdo: ""
		}),

		pagAnterior: function ()
		{
			var m = this.mPaginacion;

			if (m.get("pagina") <= 1) return;
			m.set("pagina", m.get("pagina") - 1);

			this.filtrarLista();
		},

		pagSiguiente: function ()
		{
			var m = this.mPaginacion;

			if (m.get("pagina") >= m.get("paginas")) return;
			m.set("pagina", m.getInt("pagina") + 1);

			this.filtrarLista();
		},

		exportar: function (full)
		{
			var m = this.mPaginacion.get();
			var data = this.mFiltros.get(true);
			var s = this;

			data.op = "exportar";
			data.offset = (m.pagina-1)*m.count;
			data.count = m.count;
			data.full = full ? 1 : 0;

			var url = this.apiUrl + "?" + $.param(data);

			window.open (url);
		},

		filtrarLista: function ()
		{
			var m = this.mPaginacion.get();
			var data = this.mFiltros.get(true);
			var s = this;

			data.op = "listar";
			data.offset = (m.pagina-1)*m.count;
			data.count = m.count;

			Ajax.request (this.apiUrl, data, function (r)
			{
				s.mDatos.set ("lista_vacia", r.datos.length == 0 ? 1 : 0);
				s.mDatos.set ("lista", r.datos);
			});
		},

		cargarLista: function ()
		{
			var m = this.mPaginacion.get();
			var data = this.mFiltros.get(true);
			var s = this;

			data.op = "contar";

			Ajax.request (this.apiUrl, data, function (r)
			{
				if (r.total == m.total) return;

				s.mPaginacion.set ({
					paginas: Math.floor ((parseInt(r.total) + m.count - 1) / m.count),
					total: r.total,
					pagina: 1
				});
			});

			this.filtrarLista();
		},

		cargarEnum: function (op, nombre)
		{
			var s = this;

			Ajax.request (this.apiUrl, { op: op }, function (r)
			{
				s.mFiltros.set (nombre, r.datos);
			});
		}
	},

	IXE:
	{
		apiUrl: "code/api/c_reporte_ixe.php",

		mDatos: new Rin.Model (null, {
			lista: [ ], lista_vacia: 1,
		}),

		mPaginacion: new Rin.Model (null, {
			total: 0, pagina: 1, paginas: 0, count: 20
		}),

		mFiltros: new Rin.Model ({ }, { }),

		pagAnterior: function ()
		{
			var m = this.mPaginacion;

			if (m.get("pagina") <= 1) return;
			m.set("pagina", m.get("pagina") - 1);

			this.filtrarLista();
		},

		pagSiguiente: function ()
		{
			var m = this.mPaginacion;

			if (m.get("pagina") >= m.get("paginas")) return;
			m.set("pagina", m.getInt("pagina") + 1);

			this.filtrarLista();
		},

		exportar: function (full)
		{
			var m = this.mPaginacion.get();
			var data = this.mFiltros.get(true);
			var s = this;

			data.op = "exportar";
			data.offset = (m.pagina-1)*m.count;
			data.count = m.count;
			data.full = full ? 1 : 0;

			var url = this.apiUrl + "?" + $.param(data);

			window.open (url);
		},

		filtrarLista: function ()
		{
			var m = this.mPaginacion.get();
			var data = this.mFiltros.get(true);
			var s = this;

			data.op = "listar";
			data.offset = (m.pagina-1)*m.count;
			data.count = m.count;

			Ajax.request (this.apiUrl, data, function (r)
			{
				s.mDatos.set ("lista_vacia", r.datos.length == 0 ? 1 : 0);
				s.mDatos.set ("lista", r.datos);
			});
		},

		cargarLista: function ()
		{
			var m = this.mPaginacion.get();
			var data = this.mFiltros.get(true);
			var s = this;

			data.op = "contar";

			Ajax.request (this.apiUrl, data, function (r)
			{
				if (r.total == m.total) return;

				s.mPaginacion.set ({
					paginas: Math.floor ((parseInt(r.total) + m.count - 1) / m.count),
					total: r.total,
					pagina: 1
				});
			});

			this.filtrarLista();
		}
	},

	EXE:
	{
		apiUrl: "code/api/c_reporte_exe.php",

		mDatos: new Rin.Model (null, {
			lista: [ ], lista_vacia: 1,
		}),

		mPaginacion: new Rin.Model (null, {
			total: 0, pagina: 1, paginas: 0, count: 20
		}),

		mFiltros: new Rin.Model ({ }, { }),

		pagAnterior: function ()
		{
			var m = this.mPaginacion;

			if (m.get("pagina") <= 1) return;
			m.set("pagina", m.get("pagina") - 1);

			this.filtrarLista();
		},

		pagSiguiente: function ()
		{
			var m = this.mPaginacion;

			if (m.get("pagina") >= m.get("paginas")) return;
			m.set("pagina", m.getInt("pagina") + 1);

			this.filtrarLista();
		},

		exportar: function (full)
		{
			var m = this.mPaginacion.get();
			var data = this.mFiltros.get(true);
			var s = this;

			data.op = "exportar";
			data.offset = (m.pagina-1)*m.count;
			data.count = m.count;
			data.full = full ? 1 : 0;

			var url = this.apiUrl + "?" + $.param(data);

			window.open (url);
		},

		filtrarLista: function ()
		{
			var m = this.mPaginacion.get();
			var data = this.mFiltros.get(true);
			var s = this;

			data.op = "listar";
			data.offset = (m.pagina-1)*m.count;
			data.count = m.count;

			Ajax.request (this.apiUrl, data, function (r)
			{
				s.mDatos.set ("lista_vacia", r.datos.length == 0 ? 1 : 0);
				s.mDatos.set ("lista", r.datos);
			});
		},

		cargarLista: function ()
		{
			var m = this.mPaginacion.get();
			var data = this.mFiltros.get(true);
			var s = this;

			data.op = "contar";

			Ajax.request (this.apiUrl, data, function (r)
			{
				if (r.total == m.total) return;

				s.mPaginacion.set ({
					paginas: Math.floor ((parseInt(r.total) + m.count - 1) / m.count),
					total: r.total,
					pagina: 1
				});
			});

			this.filtrarLista();
		}
	},

	Programa:
	{
		apiUrl: "code/api/c_reporte_programa.php",

		mDatos: new Rin.Model (null, {
			lista: [ ], lista_vacia: 1,
		}),

		mPaginacion: new Rin.Model (null, {
			total: 0, pagina: 1, paginas: 0, count: 20
		}),

		mFiltros: new Rin.Model ({ }, {
			programa: ""
		}),

		pagAnterior: function ()
		{
			var m = this.mPaginacion;

			if (m.get("pagina") <= 1) return;
			m.set("pagina", m.get("pagina") - 1);

			this.filtrarLista();
		},

		pagSiguiente: function ()
		{
			var m = this.mPaginacion;

			if (m.get("pagina") >= m.get("paginas")) return;
			m.set("pagina", m.getInt("pagina") + 1);

			this.filtrarLista();
		},

		exportar: function (full)
		{
			var m = this.mPaginacion.get();
			var data = this.mFiltros.get(true);
			var s = this;

			data.op = "exportar";
			data.offset = (m.pagina-1)*m.count;
			data.count = m.count;
			data.full = full ? 1 : 0;

			var url = this.apiUrl + "?" + $.param(data);

			window.open (url);
		},

		filtrarLista: function ()
		{
			var m = this.mPaginacion.get();
			var data = this.mFiltros.get(true);
			var s = this;

			data.op = "listar";
			data.offset = (m.pagina-1)*m.count;
			data.count = m.count;

			Ajax.request (this.apiUrl, data, function (r)
			{
				s.mDatos.set ("lista_vacia", r.datos.length == 0 ? 1 : 0);
				s.mDatos.set ("lista", r.datos);
			});
		},

		cargarLista: function ()
		{
			var m = this.mPaginacion.get();
			var data = this.mFiltros.get(true);
			var s = this;

			data.op = "contar";

			Ajax.request (this.apiUrl, data, function (r)
			{
				if (r.total == m.total) return;

				s.mPaginacion.set ({
					paginas: Math.floor ((parseInt(r.total) + m.count - 1) / m.count),
					total: r.total,
					pagina: 1
				});
			});

			this.filtrarLista();
		},

		cargarEnum: function (op, nombre)
		{
			var s = this;

			Ajax.request (this.apiUrl, { op: op }, function (r)
			{
				s.mFiltros.set (nombre, r.datos);
			});
		}
	},

	Grupo:
	{
		apiUrl: "code/api/c_reporte_grupo.php",

		mDatos: new Rin.Model (null, {
			lista: [ ], lista_vacia: 1,
		}),

		mPaginacion: new Rin.Model (null, {
			total: 0, pagina: 1, paginas: 0, count: 20
		}),

		mFiltros: new Rin.Model ({ }, {
			grupo: ""
		}),

		pagAnterior: function ()
		{
			var m = this.mPaginacion;

			if (m.get("pagina") <= 1) return;
			m.set("pagina", m.get("pagina") - 1);

			this.filtrarLista();
		},

		pagSiguiente: function ()
		{
			var m = this.mPaginacion;

			if (m.get("pagina") >= m.get("paginas")) return;
			m.set("pagina", m.getInt("pagina") + 1);

			this.filtrarLista();
		},

		exportar: function (full)
		{
			var m = this.mPaginacion.get();
			var data = this.mFiltros.get(true);
			var s = this;

			data.op = "exportar";
			data.offset = (m.pagina-1)*m.count;
			data.count = m.count;
			data.full = full ? 1 : 0;

			var url = this.apiUrl + "?" + $.param(data);

			window.open (url);
		},

		filtrarLista: function ()
		{
			var m = this.mPaginacion.get();
			var data = this.mFiltros.get(true);
			var s = this;

			data.op = "listar";
			data.offset = (m.pagina-1)*m.count;
			data.count = m.count;

			Ajax.request (this.apiUrl, data, function (r)
			{
				s.mDatos.set ("lista_vacia", r.datos.length == 0 ? 1 : 0);
				s.mDatos.set ("lista", r.datos);
			});
		},

		cargarLista: function ()
		{
			var m = this.mPaginacion.get();
			var data = this.mFiltros.get(true);
			var s = this;

			data.op = "contar";

			Ajax.request (this.apiUrl, data, function (r)
			{
				if (r.total == m.total) return;

				s.mPaginacion.set ({
					paginas: Math.floor ((parseInt(r.total) + m.count - 1) / m.count),
					total: r.total,
					pagina: 1
				});
			});

			this.filtrarLista();
		},

		cargarEnum: function (op, nombre)
		{
			var s = this;

			Ajax.request (this.apiUrl, { op: op }, function (r)
			{
				s.mFiltros.set (nombre, r.datos);
			});
		}
	},

	SubGrupo:
	{
		apiUrl: "code/api/c_reporte_sub_grupo.php",

		mDatos: new Rin.Model (null, {
			lista: [ ], lista_vacia: 1,
		}),

		mPaginacion: new Rin.Model (null, {
			total: 0, pagina: 1, paginas: 0, count: 20
		}),

		mFiltros: new Rin.Model ({ }, {
			subgrupo: ""
		}),

		pagAnterior: function ()
		{
			var m = this.mPaginacion;

			if (m.get("pagina") <= 1) return;
			m.set("pagina", m.get("pagina") - 1);

			this.filtrarLista();
		},

		pagSiguiente: function ()
		{
			var m = this.mPaginacion;

			if (m.get("pagina") >= m.get("paginas")) return;
			m.set("pagina", m.getInt("pagina") + 1);

			this.filtrarLista();
		},

		exportar: function (full)
		{
			var m = this.mPaginacion.get();
			var data = this.mFiltros.get(true);
			var s = this;

			data.op = "exportar";
			data.offset = (m.pagina-1)*m.count;
			data.count = m.count;
			data.full = full ? 1 : 0;

			var url = this.apiUrl + "?" + $.param(data);

			window.open (url);
		},

		filtrarLista: function ()
		{
			var m = this.mPaginacion.get();
			var data = this.mFiltros.get(true);
			var s = this;

			data.op = "listar";
			data.offset = (m.pagina-1)*m.count;
			data.count = m.count;

			Ajax.request (this.apiUrl, data, function (r)
			{
				s.mDatos.set ("lista_vacia", r.datos.length == 0 ? 1 : 0);
				s.mDatos.set ("lista", r.datos);
			});
		},

		cargarLista: function ()
		{
			var m = this.mPaginacion.get();
			var data = this.mFiltros.get(true);
			var s = this;

			data.op = "contar";

			Ajax.request (this.apiUrl, data, function (r)
			{
				if (r.total == m.total) return;

				s.mPaginacion.set ({
					paginas: Math.floor ((parseInt(r.total) + m.count - 1) / m.count),
					total: r.total,
					pagina: 1
				});
			});

			this.filtrarLista();
		},

		cargarEnum: function (op, nombre)
		{
			var s = this;

			Ajax.request (this.apiUrl, { op: op }, function (r)
			{
				s.mFiltros.set (nombre, r.datos);
			});
		}
	}
};

// ----------------------------------------------------------------------
Reportes.ECPI.cargarEnum ("departamentos", "enumDeptos");
Reportes.ECPI.cargarEnum ("cargos", "enumCargos");
Reportes.ECPI.cargarLista ();

Reportes.IXE.cargarLista ();
Reportes.EXE.cargarLista ();
Reportes.Programa.cargarLista ();
Reportes.Grupo.cargarLista ();
Reportes.SubGrupo.cargarLista ();
